
    using System.Collections.Generic;
    using System.Data.SqlClient;
    using ADL;
    using ADL.BodegaTableAdapters;
    using AEL.BOD;
    using BEL;
    using System;
    
    namespace CEL.BOD
    {
    /// <summary>
    /// Acceso a la base de datos
    /// Modulo:Bodega tar
    /// Tabla:Bod_Kardex
    /// </summary>
    public class DO_Bod_Kardex
    {
    #region Adapter
    private Bod_KardexTableAdapter _Adapter;
    /// <summary>
    /// Acceso al Table Adapter de la capa ADL
    /// </summary>
    public Bod_KardexTableAdapter Adapter
    {
    get
    {
    if (_Adapter == null)
    _Adapter = new Bod_KardexTableAdapter();
     return _Adapter;
     }
     }
    #endregion
    #region Obtención de datos
    //Obtencion de datos
    /// <summary>
    /// Obtiene todos los datos de la tabla Bod_Kardex
    /// </summary> 
    /// <returns>Lista de objetos Bod_Kardex</returns> 
    public List <Bod_Kardex> Get ( Scope s )
    {
    string llamada = "";
    List <Bod_Kardex> lista= new List <Bod_Kardex> ();
    //Extrae los datos
    if(s != null)
    {
    Bodega.Bod_KardexDataTable tabla = 
    Adapter.Get (s.Ver_Version_Id);
    //Cuenta  el número  de registros de la tabla
    int numeroRegistros = tabla.Count;
    llamada = "Nombre del Método Utilizado: Get "  + "Parametros  Enviados en el Método: s "  + " Nombre del Store Procedure: " + " Bod_Kardex_Get "+ " Número de Registros: " + numeroRegistros;
    //Carga en la lista
      foreach (Bodega.Bod_KardexRow fila in tabla)
      lista.Add(new Bod_Kardex(
      
    fila.Id,
    fila.Codigo,
    fila.Estado,
    fila.Secuencia,
    fila.Int_Empresa_Id,
    fila.Bod_Bodega_Id,
    fila.Fecha,
    fila.Marca,
    fila.Tipo,
    fila.Com_Articulo_Id,
    fila.Cantidad,
    fila.Stock,
    fila.Fecha_Creacion,
    fila.Creacion_Per_Personal_Id,
    fila.Fecha_Update,
    fila.Update_Per_Personal_Id,
    fila.Xml,
    fila.Bod_Bodega_Codigo,
    fila.Bod_Bodega_Nombre,
    fila.Com_Articulo_Codigo,
    fila.Com_Articulo_Nombre,
    fila.Creacion_Per_Personal_Codigo,
    fila.Creacion_Per_Personal_Nombre,
    fila.Update_Per_Personal_Codigo,
    fila.Update_Per_Personal_Nombre,
    fila.Origen_Nombre,
    fila.Origen_Id_Codigo,
    fila.Marca_Nombre,
    fila.Tipo_Nombre,
    fila.Estado_Nombre));
      }
      //Devuleve la Lista
      return lista;
      }
      public List <Bod_Kardex> GetByCodigo( Scope s , string Codigo)
          {
          string llamada = "";
          List <Bod_Kardex> lista= new List <Bod_Kardex> ();
          //Extrae los datos
          if(s != null)
          {
          Bodega.Bod_KardexDataTable tabla = 
          Adapter.GetByCodigo(s.Ver_Version_Id, Codigo);
          //Cuenta  el número  de registros de la tabla
          int numeroRegistros = tabla.Count;
          llamada = "Nombre del Método Utilizado: " + " GetByCodigo" + " Parametros  Enviados en el Método: "+ "," + " s.Ver_Version_Id : " + s.Ver_Version_Id+ "," + " Codigo : " + Codigo  + " Nombre del Store Procedure: " + "dbo.Bod_Kardex_ByCodigo " + " Número de Registros: " + numeroRegistros;
          //Carga en la lista
          foreach (Bodega.Bod_KardexRow fila in tabla)
          lista.Add(new Bod_Kardex(
          
    fila.Id,
    fila.Codigo,
    fila.Estado,
    fila.Secuencia,
    fila.Int_Empresa_Id,
    fila.Bod_Bodega_Id,
    fila.Fecha,
    fila.Marca,
    fila.Tipo,
    fila.Com_Articulo_Id,
    fila.Cantidad,
    fila.Stock,
    fila.Fecha_Creacion,
    fila.Creacion_Per_Personal_Id,
    fila.Fecha_Update,
    fila.Update_Per_Personal_Id,
    fila.Xml,
    fila.Bod_Bodega_Codigo,
    fila.Bod_Bodega_Nombre,
    fila.Com_Articulo_Codigo,
    fila.Com_Articulo_Nombre,
    fila.Creacion_Per_Personal_Codigo,
    fila.Creacion_Per_Personal_Nombre,
    fila.Update_Per_Personal_Codigo,
    fila.Update_Per_Personal_Nombre,
    fila.Origen_Nombre,
    fila.Origen_Id_Codigo,
    fila.Marca_Nombre,
    fila.Tipo_Nombre,
    fila.Estado_Nombre));
          }
          //Realiza la auditoria
          Auditar.Registro(s, llamada, lista, Textos._AUDITAR_ACCION_SELECT_SEL);
          //Devuleve la Lista
          return lista;
          }
          public List <Bod_Kardex> GetById( Scope s , string Id)
          {
          string llamada = "";
          List <Bod_Kardex> lista= new List <Bod_Kardex> ();
          //Extrae los datos
          if(s != null)
          {
          Bodega.Bod_KardexDataTable tabla = 
          Adapter.GetById(s.Ver_Version_Id, Id);
          //Cuenta  el número  de registros de la tabla
          int numeroRegistros = tabla.Count;
          llamada = "Nombre del Método Utilizado: " + " GetById" + " Parametros  Enviados en el Método: "+ "," + " s.Ver_Version_Id : " + s.Ver_Version_Id+ "," + " Id : " + Id  + " Nombre del Store Procedure: " + "dbo.Bod_Kardex_ById " + " Número de Registros: " + numeroRegistros;
          //Carga en la lista
          foreach (Bodega.Bod_KardexRow fila in tabla)
          lista.Add(new Bod_Kardex(
          
    fila.Id,
    fila.Codigo,
    fila.Estado,
    fila.Secuencia,
    fila.Int_Empresa_Id,
    fila.Bod_Bodega_Id,
    fila.Fecha,
    fila.Marca,
    fila.Tipo,
    fila.Com_Articulo_Id,
    fila.Cantidad,
    fila.Stock,
    fila.Fecha_Creacion,
    fila.Creacion_Per_Personal_Id,
    fila.Fecha_Update,
    fila.Update_Per_Personal_Id,
    fila.Xml,
    fila.Bod_Bodega_Codigo,
    fila.Bod_Bodega_Nombre,
    fila.Com_Articulo_Codigo,
    fila.Com_Articulo_Nombre,
    fila.Creacion_Per_Personal_Codigo,
    fila.Creacion_Per_Personal_Nombre,
    fila.Update_Per_Personal_Codigo,
    fila.Update_Per_Personal_Nombre,
    fila.Origen_Nombre,
    fila.Origen_Id_Codigo,
    fila.Marca_Nombre,
    fila.Tipo_Nombre,
    fila.Estado_Nombre));
          }
          //Realiza la auditoria
          Auditar.Registro(s, llamada, lista, Textos._AUDITAR_ACCION_SELECT_SEL);
          //Devuleve la Lista
          return lista;
          }
        public List <Bod_Kardex> GetByKardex( Scope s , string Id,string Bod_Bodega_Id,string Com_Articulo_Id,string Update_Per_Personal_Id,string Estado )
          {
          string llamada = "";
          List <Bod_Kardex> lista= new List <Bod_Kardex> ();
          //Extrae los datos
          if(s != null)
          {
          Bodega.Bod_KardexDataTable tabla = 
          Adapter.GetByKardex(s.Ver_Version_Id,Id, Bod_Bodega_Id,Com_Articulo_Id,Update_Per_Personal_Id,Estado );
          //Cuenta  el número  de registros de la tabla
          int numeroRegistros = tabla.Count;
          llamada = "Nombre del Método Utilizado: " + " GetByKardex" + " Parametros  Enviados en el Método: "+ "," + " ver_version_id : " + s.Ver_Version_Id+ "," + "  : " + "," + " Bodega_Id : " + Bod_Bodega_Id+ "," + " Articulo_Id : " + Com_Articulo_Id+ "," + " Per_Personal_Id : " + Update_Per_Personal_Id+ "," + "  : " +  " Nombre del Store Procedure: " + "dbo.Bod_Kardex_ByKardex " + " Número de Registros: " + numeroRegistros;
          //Carga en la lista
          foreach (Bodega.Bod_KardexRow fila in tabla)
          lista.Add(new Bod_Kardex(
          
    fila.Id,
    fila.Codigo,
    fila.Estado,
    fila.Secuencia,
    fila.Int_Empresa_Id,
    fila.Bod_Bodega_Id,
    fila.Fecha,
    fila.Marca,
    fila.Tipo,
    fila.Com_Articulo_Id,
    fila.Cantidad,
    fila.Stock,
    fila.Fecha_Creacion,
    fila.Creacion_Per_Personal_Id,
    fila.Fecha_Update,
    fila.Update_Per_Personal_Id,
    fila.Xml,
    fila.Bod_Bodega_Codigo,
    fila.Bod_Bodega_Nombre,
    fila.Com_Articulo_Codigo,
    fila.Com_Articulo_Nombre,
    fila.Creacion_Per_Personal_Codigo,
    fila.Creacion_Per_Personal_Nombre,
    fila.Update_Per_Personal_Codigo,
    fila.Update_Per_Personal_Nombre,
    fila.Origen_Nombre,
    fila.Origen_Id_Codigo,
    fila.Marca_Nombre,
    fila.Tipo_Nombre,
    fila.Estado_Nombre));
          }
          //Realiza la auditoria
          Auditar.Registro(s, llamada, lista, Textos._AUDITAR_ACCION_SELECT_SEL);
          //Devuleve la Lista
          return lista;
          }
        public List <Bod_Kardex> GetByStockActual( Scope s ,string Bod_Bodega_Id,string  Com_Articulo_Id,  DateTime Fecha)
          {
          string llamada = "";
          List <Bod_Kardex> lista= new List <Bod_Kardex> ();
          //Extrae los datos
          if(s != null)
          {
          Bodega.Bod_KardexDataTable tabla = 
          Adapter.GetByStockActual(s.Ver_Version_Id,Bod_Bodega_Id, Com_Articulo_Id, Fecha);
          //Cuenta  el número  de registros de la tabla
          int numeroRegistros = tabla.Count;
          llamada = "Nombre del Método Utilizado: " + " GetByStockActual" + " Parametros  Enviados en el Método: "+ "," + " s.Ver_Version_Id : " + s.Ver_Version_Id+ "," + " Bod_Bodega_Id : " + Bod_Bodega_Id+ "," + " Com_Articulo_Id : " + Com_Articulo_Id+ "," + " Fecha : " + Fecha  + " Nombre del Store Procedure: " + "dbo.Bod_Kardex_ByStockActual " + " Número de Registros: " + numeroRegistros;
          //Carga en la lista
          foreach (Bodega.Bod_KardexRow fila in tabla)
          lista.Add(new Bod_Kardex(
          
    fila.Id,
    fila.Codigo,
    fila.Estado,
    fila.Secuencia,
    fila.Int_Empresa_Id,
    fila.Bod_Bodega_Id,
    fila.Fecha,
    fila.Marca,
    fila.Tipo,
    fila.Com_Articulo_Id,
    fila.Cantidad,
    fila.Stock,
    fila.Fecha_Creacion,
    fila.Creacion_Per_Personal_Id,
    fila.Fecha_Update,
    fila.Update_Per_Personal_Id,
    fila.Xml,
    fila.Bod_Bodega_Codigo,
    fila.Bod_Bodega_Nombre,
    fila.Com_Articulo_Codigo,
    fila.Com_Articulo_Nombre,
    fila.Creacion_Per_Personal_Codigo,
    fila.Creacion_Per_Personal_Nombre,
    fila.Update_Per_Personal_Codigo,
    fila.Update_Per_Personal_Nombre,
    fila.Origen_Nombre,
    fila.Origen_Id_Codigo,
    fila.Marca_Nombre,
    fila.Tipo_Nombre,
    fila.Estado_Nombre));
          }
          //Realiza la auditoria
          Auditar.Registro(s, llamada, lista, Textos._AUDITAR_ACCION_SELECT_SEL);
          //Devuleve la Lista
          return lista;
          }
        public List <Bod_Kardex> GetByNueva_Secuencia_Delete( Scope s , string Bod_Bodega_Id,string Com_Articulo_Id,int Secuencia)
          {
          string llamada = "";
          List <Bod_Kardex> lista= new List <Bod_Kardex> ();
          //Extrae los datos
          if(s != null)
          {
          Bodega.Bod_KardexDataTable tabla = 
          Adapter.GetByNueva_Secuencia_Delete(s.Ver_Version_Id, Bod_Bodega_Id,Com_Articulo_Id, Secuencia);
          //Cuenta  el número  de registros de la tabla
          int numeroRegistros = tabla.Count;
          llamada = "Nombre del Método Utilizado: " + " GetByNueva_Secuencia_Delete" + " Parametros  Enviados en el Método: "+ "," + " s.Ver_Version_Id : " + s.Ver_Version_Id+ "," + " Bod_Bodega_Id : " + Bod_Bodega_Id+ "," + " Com_Articulo_Id : " + Com_Articulo_Id+ "," + " Secuencia : " + Secuencia  + " Nombre del Store Procedure: " + "dbo.Bod_Kardex_Nueva_Secuencia_Delete " + " Número de Registros: " + numeroRegistros;
          //Carga en la lista
          foreach (Bodega.Bod_KardexRow fila in tabla)
          lista.Add(new Bod_Kardex(
          
    fila.Id,
    fila.Codigo,
    fila.Estado,
    fila.Secuencia,
    fila.Int_Empresa_Id,
    fila.Bod_Bodega_Id,
    fila.Fecha,
    fila.Marca,
    fila.Tipo,
    fila.Com_Articulo_Id,
    fila.Cantidad,
    fila.Stock,
    fila.Fecha_Creacion,
    fila.Creacion_Per_Personal_Id,
    fila.Fecha_Update,
    fila.Update_Per_Personal_Id,
    fila.Xml,
    fila.Bod_Bodega_Codigo,
    fila.Bod_Bodega_Nombre,
    fila.Com_Articulo_Codigo,
    fila.Com_Articulo_Nombre,
    fila.Creacion_Per_Personal_Codigo,
    fila.Creacion_Per_Personal_Nombre,
    fila.Update_Per_Personal_Codigo,
    fila.Update_Per_Personal_Nombre,
    fila.Origen_Nombre,
    fila.Origen_Id_Codigo,
    fila.Marca_Nombre,
    fila.Tipo_Nombre,
    fila.Estado_Nombre));
          }
          //Realiza la auditoria
          Auditar.Registro(s, llamada, lista, Textos._AUDITAR_ACCION_SELECT_SEL);
          //Devuleve la Lista
          return lista;
          }
          public List <Bod_Kardex> GetByNueva_Secuencia_Insert( Scope s , string Bod_Bodega_Id,string Com_Articulo_Id,int Secuencia)
          {
          string llamada = "";
          List <Bod_Kardex> lista= new List <Bod_Kardex> ();
          //Extrae los datos
          if(s != null)
          {
          Bodega.Bod_KardexDataTable tabla = 
          Adapter.GetByNueva_Secuencia_Insert(s.Ver_Version_Id,Bod_Bodega_Id,Com_Articulo_Id, Secuencia);
          //Cuenta  el número  de registros de la tabla
          int numeroRegistros = tabla.Count;
          llamada = "Nombre del Método Utilizado: " + " GetByNueva_Secuencia_Insert" + " Parametros  Enviados en el Método: "+ "," + " s.Ver_Version_Id : " + s.Ver_Version_Id+ "," + " Bod_Bodega_Id : " + Bod_Bodega_Id+ "," + " Com_Articulo_Id : " + Com_Articulo_Id+ "," + " Secuencia : " + Secuencia  + " Nombre del Store Procedure: " + "dbo.Bod_Kardex_Nueva_Secuencia_Insert " + " Número de Registros: " + numeroRegistros;
          //Carga en la lista
          foreach (Bodega.Bod_KardexRow fila in tabla)
          lista.Add(new Bod_Kardex(
          
    fila.Id,
    fila.Codigo,
    fila.Estado,
    fila.Secuencia,
    fila.Int_Empresa_Id,
    fila.Bod_Bodega_Id,
    fila.Fecha,
    fila.Marca,
    fila.Tipo,
    fila.Com_Articulo_Id,
    fila.Cantidad,
    fila.Stock,
    fila.Fecha_Creacion,
    fila.Creacion_Per_Personal_Id,
    fila.Fecha_Update,
    fila.Update_Per_Personal_Id,
    fila.Xml,
    fila.Bod_Bodega_Codigo,
    fila.Bod_Bodega_Nombre,
    fila.Com_Articulo_Codigo,
    fila.Com_Articulo_Nombre,
    fila.Creacion_Per_Personal_Codigo,
    fila.Creacion_Per_Personal_Nombre,
    fila.Update_Per_Personal_Codigo,
    fila.Update_Per_Personal_Nombre,
    fila.Origen_Nombre,
    fila.Origen_Id_Codigo,
    fila.Marca_Nombre,
    fila.Tipo_Nombre,
    fila.Estado_Nombre));
          }
              //Realiza la auditoria
          Auditar.Registro(s, llamada, lista, Textos._AUDITAR_ACCION_SELECT_SEL);
          //Devuleve la Lista
          return lista;
          }
        public List<Bod_Kardex> GetByUpdate_Kardex(Scope s, string Id, int Secuencia, decimal Stock, string Int_Empresa_Id, string Bod_Bodega_Id, string Com_Articulo_Id, string Update_Per_Personal_Id)
          {
          string llamada = "";
          List <Bod_Kardex> lista= new List <Bod_Kardex> ();
          //Extrae los datos
          if(s != null)
          {
          Bodega.Bod_KardexDataTable tabla = 
          Adapter.GetByUpdate_Kardex(Id,
                                     Secuencia, Stock,
                                     Int_Empresa_Id,
                                     Bod_Bodega_Id, Com_Articulo_Id,
                                     Update_Per_Personal_Id);
          //Cuenta  el número  de registros de la tabla
          int numeroRegistros = tabla.Count;
          llamada = "Nombre del Método Utilizado: " + " GetByUpdate_Kardex" + " Parametros  Enviados en el Método: "+ "," + "  : " +s.Ver_Version_Id + "," + "  : " +Id+ "," + "  : " +Secuencia+ "," + "  : " +Stock+ "," + "Int_Empresa_Id : " + Int_Empresa_Id+ "," + "Bod_Bodega_Id : " +Bod_Bodega_Id+ "," +  "Com_Articulo_Id : " +Com_Articulo_Id+ "," +  "Update_Per_Personal_Id : " +Update_Per_Personal_Id+ "," +" Nombre del Store Procedure: " + "dbo.Bod_Kardex_Update_Kardex " + " Número de Registros: " + numeroRegistros;
          //Carga en la lista
          foreach (Bodega.Bod_KardexRow fila in tabla)
          lista.Add(new Bod_Kardex(
          
    fila.Id,
    fila.Codigo,
    fila.Estado,
    fila.Secuencia,
    fila.Int_Empresa_Id,
    fila.Bod_Bodega_Id,
    fila.Fecha,
    fila.Marca,
    fila.Tipo,
    fila.Com_Articulo_Id,
    fila.Cantidad,
    fila.Stock,
    fila.Fecha_Creacion,
    fila.Creacion_Per_Personal_Id,
    fila.Fecha_Update,
    fila.Update_Per_Personal_Id,
    fila.Xml,
    fila.Bod_Bodega_Codigo,
    fila.Bod_Bodega_Nombre,
    fila.Com_Articulo_Codigo,
    fila.Com_Articulo_Nombre,
    fila.Creacion_Per_Personal_Codigo,
    fila.Creacion_Per_Personal_Nombre,
    fila.Update_Per_Personal_Codigo,
    fila.Update_Per_Personal_Nombre,
    fila.Origen_Nombre,
    fila.Origen_Id_Codigo,
    fila.Marca_Nombre,
    fila.Tipo_Nombre,
    fila.Estado_Nombre));
          }
          //Realiza la auditoria
          Auditar.Registro(s, llamada, lista, Textos._AUDITAR_ACCION_SELECT_SEL);
          //Devuleve la Lista
          return lista;
          }
        public List<Bod_Kardex> GetByConsultar(Scope s, string Bod_Bodega_Id, string Com_Articulo_Id, string Bod_Unidad_Id, DateTime Fecha_Inicial, DateTime Fecha_Final)
          {
          string llamada = "";
          List <Bod_Kardex> lista= new List <Bod_Kardex> ();
          //Extrae los datos
          if(s != null)
          {
          Bodega.Bod_KardexDataTable tabla = 
          Adapter.GetByConsultar(s.Ver_Version_Id,Bod_Bodega_Id, Com_Articulo_Id,Bod_Unidad_Id,Fecha_Inicial, Fecha_Final);
          //Cuenta  el número  de registros de la tabla
          int numeroRegistros = tabla.Count;
          llamada = "Nombre del Método Utilizado: " + " GetByConsultar" + " Parametros  Enviados en el Método: "+ "," + " s.Ver_Version_Id : " + s.Ver_Version_Id+ "," + " Bod_Bodega_Id : " + Bod_Bodega_Id+ "," + " Com_Articulo_Id : " + Com_Articulo_Id+ "," + " Bod_Unidad_Id : " + Bod_Unidad_Id+ "," + " Fecha_Inicial : " + Fecha_Inicial+ "," + " Fecha_Final : " + Fecha_Final  + " Nombre del Store Procedure: " + "dbo.Bod_Kardex_ByConsultar " + " Número de Registros: " + numeroRegistros;
          //Carga en la lista
          foreach (Bodega.Bod_KardexRow fila in tabla)
          lista.Add(new Bod_Kardex(
          
    fila.Id,
    fila.Codigo,
    fila.Estado,
    fila.Secuencia,
    fila.Int_Empresa_Id,
    fila.Bod_Bodega_Id,
    fila.Fecha,
    fila.Marca,
    fila.Tipo,
    fila.Com_Articulo_Id,
    fila.Cantidad,
    fila.Stock,
    fila.Fecha_Creacion,
    fila.Creacion_Per_Personal_Id,
    fila.Fecha_Update,
    fila.Update_Per_Personal_Id,
    fila.Xml,
    fila.Bod_Bodega_Codigo,
    fila.Bod_Bodega_Nombre,
    fila.Com_Articulo_Codigo,
    fila.Com_Articulo_Nombre,
    fila.Creacion_Per_Personal_Codigo,
    fila.Creacion_Per_Personal_Nombre,
    fila.Update_Per_Personal_Codigo,
    fila.Update_Per_Personal_Nombre,
    fila.Origen_Nombre,
    fila.Origen_Id_Codigo,
    fila.Marca_Nombre,
    fila.Tipo_Nombre,
    fila.Estado_Nombre));
          }
          //Realiza la auditoria
          Auditar.Registro(s, llamada, lista, Textos._AUDITAR_ACCION_SELECT_SEL);
          //Devuleve la Lista
          return lista;
          }

    
        #endregion
    #region Operaciones con datos
    
    //Inserta
    /// <summary>
    /// Inserta el objeto en la tabla Bod_Kardex
    /// </summary>
    /// <param name="s">Variables de ámbito como la versión y la sucursal</param>
    // <returns></returns>
    public string Insert(Scope s, Bod_Kardex o)
    {
    // Genera un nuevo Id, codigo y estado.
    o.GenNewId(s.Int_Sucursal_Numero);
    o.GenCodigo(s.Ver_Version_Id);
    o.GenEstado();
    // Controla el error de clave primaria duplicada.
    try
    {
    Adapter.Insert(
    
          o.Id,
          o.Codigo,
          o.Secuencia,
          o.Int_Empresa_Id,
          o.Bod_Bodega_Id,
          o.Fecha,
          o.Marca,
          o.Tipo,
          o.Com_Articulo_Id,
          o.Cantidad,
          o.Stock,
          o.Fecha_Creacion,
          o.Creacion_Per_Personal_Id,
          o.Fecha_Update,
          o.Update_Per_Personal_Id,
          o.Xml,
          o.Estado
    );
    }
    catch (SqlException e)
    {
        System.Exception eCaso;
        System.Exception otroEX;

    switch (e.Number)
    {
    // Si el error es de violación PK, entonces repite.
    case 2627:
    string mensaje = e.Errors[0].Message;
    if (mensaje.StartsWith(
    Textos._ERR_VIOLATION_UNIQUE_KEY)
    )
    return Insert(s, o);
        else
        {
            if (e.Message.Contains(TXT_BDD._IX_Bod_Kardex_Codigo))
            {
                eCaso = new System.Exception("");
                otroEX = new System.Exception(TXT_Mensajes._MSJ32, eCaso);
                throw (otroEX);
            }
            if (e.Message.Contains(TXT_BDD._CK_Bod_Kardex_Stock))
            {
                eCaso = new System.Exception("");
                otroEX = new System.Exception(TXT_Mensajes._MSJ27, eCaso);
                throw (otroEX);
            }
            eCaso = new System.Exception(e.Message);
            otroEX = new System.Exception(TXT_Mensajes._MSJ34, eCaso);
            throw (otroEX);
        }
        break;
            default:
                eCaso = new System.Exception(e.Message);
                otroEX = new System.Exception(TXT_Mensajes._MSJ34, eCaso);
                throw (otroEX);
        }
        }
    //Control de Auditoria
    Auditar.Registro(s, o, Textos._AUDITAR_ACCION_INSERT);
    //Retorna el Id Insetado
     return o.Id;
    }
    // Borra
    /// <summary>
    /// Borra el objeto de la tabla Bod_Kardex
    ///</summary>
     /// <param name="o">Objeto a actualizar</param>
    /// <returns></returns>
    public int Delete(Scope s,  Bod_Kardex o)
    {
        int resultado = 0;
        try{
          resultado = Adapter.Delete(
    
          o.Id,
          o.Codigo,
          o.Secuencia,
          o.Int_Empresa_Id,
          o.Bod_Bodega_Id,
          o.Fecha,
          o.Marca,
          o.Tipo,
          o.Com_Articulo_Id,
          o.Cantidad,
          o.Stock,
          o.Fecha_Creacion,
          o.Creacion_Per_Personal_Id,
          o.Fecha_Update,
          o.Update_Per_Personal_Id,
          o.Xml,
          o.Estado
    );
      }
      catch (SqlException e)
      {
          System.Exception eCaso;
          System.Exception otroEX;
          if (e.Message.Contains(TXT_BDD._FK_Bod_Orden_Bod_Kardex))
          {
              eCaso = new Exception("Bod Articulo");
              otroEX = new Exception(TXT_Mensajes._MSJ26, eCaso);
              throw (otroEX);
          }
          eCaso = new System.Exception(e.Message);
          otroEX = new System.Exception(TXT_Mensajes._MSJ34, eCaso);
          throw (otroEX);
      }   
    Auditar.Registro(s, o, Textos._AUDITAR_ACCION_DELETE);
    return resultado;
    }//Actualiza
    /// <summary>
    //Actualiza la tabla Bod_Kardex
    /// </summary>
    /// <param name="o">Objeto que contiene la información a actualizar</param>
    /// <param name="original">Original para concurrencia optimista</param> 
    /// <returns></returns>
    public int Update(Scope s, Bod_Kardex o, Bod_Kardex original)
    {
    int resultado;
    try
    {
        resultado = Adapter.Update(

          o.Id,
          o.Codigo,
          o.Secuencia,
          o.Int_Empresa_Id,
          o.Bod_Bodega_Id,
          o.Fecha,
          o.Marca,
          o.Tipo,
          o.Com_Articulo_Id,
          o.Cantidad,
          o.Stock,
          o.Fecha_Creacion,
          o.Creacion_Per_Personal_Id,
          o.Fecha_Update,
          o.Update_Per_Personal_Id,
          o.Xml,
          o.Estado,
          original.Id,
          original.Codigo,
          original.Secuencia,
          original.Int_Empresa_Id,
          original.Bod_Bodega_Id,
          original.Fecha,
          original.Marca,
          original.Tipo,
          original.Com_Articulo_Id,
          original.Cantidad,
          original.Stock,
          original.Fecha_Creacion,
          original.Creacion_Per_Personal_Id,
          original.Fecha_Update,
          original.Update_Per_Personal_Id,
          original.Xml,
          original.Estado

    );
    }
    catch (SqlException e)
    {
        System.Exception eCaso;
        System.Exception otroEX;

        if (e.Message.Contains(TXT_BDD._IX_Bod_Kardex_Codigo))
        {
            eCaso = new System.Exception("");
            otroEX = new System.Exception(TXT_Mensajes._MSJ32, eCaso);
            throw (otroEX);
        }
        eCaso = new System.Exception(e.Message);
        otroEX = new System.Exception(TXT_Mensajes._MSJ34, eCaso);
        throw (otroEX);
    }

    Auditar.Registro(s, o, Textos._AUDITAR_ACCION_UPDATE);
    return resultado;
    }
    #endregion
    }
    }
